package com.inspur.edp.bff.core.manager;

import com.inspur.edp.cef.entity.accessor.base.IAccessor;
import com.inspur.edp.cef.entity.changeset.IChangeDetail;
import com.inspur.edp.cef.entity.entity.IEntityData;

import java.util.Map;

public interface IBffBufferChangeManager {
    /**
     * 根据指定数据id获取缓存中数据（缓存1层中的数据）
     *
     * @param dataId 数据Id
     * @return 缓存中的数据
     */
    IEntityData getCurrentData(String dataId);


    /**
     * 获取原始数据
     *
     * @param dataId
     * @return
     */

    IEntityData getOriginalData(String dataId);

    /**
     * 缓存当前操作的数据，可读写
     *
     * @param data
     * @return
     */

    IAccessor initCurrentBuffer(IEntityData data);

    /**
     * 缓存原始数据
     *
     * @param data
     * @return
     */

    IAccessor initOriginalBuffer(IEntityData data);

    /**
     * 获取指定数据Id的变更
     *
     * @param dataId 数据Id
     * @return
     */

    IChangeDetail getCurrentChange(String dataId);

    /**
     * @return
     */
    Map<String, IChangeDetail> getCurrentChange();

    /**
     * 缓存变更
     *
     * @param change
     */

    void appendCurrentTemplateChange(IChangeDetail change);

    /**
     * 缓存变更
     *
     * @param change
     */

    void acceptCurrentChange(String dataId, IChangeDetail change);

    /**
     * 清除所有的数据/变更缓存
     */

    void clear();
}
